package com.aims.server.service;

import com.aims.server.domain.dto.AccountWorkbenchQueryDTO;
import com.aims.server.domain.vo.*;

import java.util.List;
import java.util.Map;

/**
 * 账户办理工作台Service
 */
public interface AccountWorkbenchService {

    /**
     * 查询日历视图数据
     *
     * @param query 查询条件
     * @return 日历视图数据
     */
    AccountCalendarVO getCalendarView(AccountWorkbenchQueryDTO query);

    /**
     * 查询任务列表
     *
     * @param query 查询条件
     * @return 任务列表
     */
    List<AccountTaskVO> getTaskList(AccountWorkbenchQueryDTO query);

    /**
     * 查询任务详情
     *
     * @param processInstanceId 流程实例ID
     * @return 任务详情
     */
    AccountTaskVO getTaskDetail(Long processInstanceId);

    /**
     * 查询任务统计
     *
     * @param query 查询条件
     * @return 任务统计
     */
    TaskStatisticsVO getTaskStatistics(AccountWorkbenchQueryDTO query);

    /**
     * 更新任务进度
     *
     * @param processInstanceId 流程实例ID
     * @param progressCode 进度代码
     * @param remark 备注
     */
    void updateTaskProgress(Long processInstanceId, String progressCode, String remark);

    /**
     * 标记任务为加急
     *
     * @param processInstanceId 流程实例ID
     * @param isUrgent 是否加急
     */
    void markTaskUrgent(Long processInstanceId, Integer isUrgent);

    /**
     * 查询工作台数据（包含四泳道）
     *
     * @param query 查询条件
     * @return 工作台数据
     */
    WorkbenchDataVO getWorkbenchData(AccountWorkbenchQueryDTO query);

    /**
     * 查询日历计数
     *
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 日期->任务数量映射
     */
    Map<String, Integer> getCalendarCounts(String startDate, String endDate);

    /**
     * 查询卡片详情
     *
     * @param cardId 卡片ID
     * @return 卡片详情
     */
    AccountCardVO getCardDetail(String cardId);
}